package Fangfa;

public class Fangfa {
    public static void main(String[] args) {
        Person ming = new Person();
        ming.setName("Xiaoming");   //设置name
        ming.setAge(12);            // 设置age
        System.out.println(ming.getName()+","+ming.getAge());
    }
}
/*
* 虽然外部代码不能直接修改private字段，但是，外部代码可以调用方法setName()和setAge()来间接修改private字段。
* 在方法内部，我们就有机会检查参数对不对。比如，setAge()就会检查传入的参数，参数超出了范围，直接报错。
* 这样，外部代码就没有任何机会把age设置成不合理的值。
*/
class Person {
    private String name;
    private int age;
    public String getName(){
        return this.name;
    }

    public void setName(String name) {
        if (name == null || name.isEmpty()){
            throw new IllegalArgumentException("invlid name");
        }
        this.name = name;
    }

    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        if (age<0 || age >100){
            throw new  IllegalArgumentException("inalid age value");
        }
        this.age = age;
    }
    

}
